package com.fujitsu.nanjing.tieba.ibator;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CoreTopicCriteria {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    private Integer mysqlOffset;

    private Integer mysqlLength;

    public CoreTopicCriteria() {
        oredCriteria = new ArrayList<Criteria>();
    }

    protected CoreTopicCriteria(CoreTopicCriteria example) {
        this.orderByClause = example.orderByClause;
        this.oredCriteria = example.oredCriteria;
        this.distinct = example.distinct;
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    public void setMysqlOffset(Integer mysqlOffset) {
        this.mysqlOffset = mysqlOffset;
    }

    public Integer getMysqlOffset() {
        return mysqlOffset;
    }

    public void setMysqlLength(Integer mysqlLength) {
        this.mysqlLength = mysqlLength;
    }

    public Integer getMysqlLength() {
        return mysqlLength;
    }

    protected abstract static class GeneratedCriteria {
        protected List<String> criteriaWithoutValue;

        protected List<Map<String, Object>> criteriaWithSingleValue;

        protected List<Map<String, Object>> criteriaWithListValue;

        protected List<Map<String, Object>> criteriaWithBetweenValue;

        protected GeneratedCriteria() {
            super();
            criteriaWithoutValue = new ArrayList<String>();
            criteriaWithSingleValue = new ArrayList<Map<String, Object>>();
            criteriaWithListValue = new ArrayList<Map<String, Object>>();
            criteriaWithBetweenValue = new ArrayList<Map<String, Object>>();
        }

        public boolean isValid() {
            return criteriaWithoutValue.size() > 0
                || criteriaWithSingleValue.size() > 0
                || criteriaWithListValue.size() > 0
                || criteriaWithBetweenValue.size() > 0;
        }

        public List<String> getCriteriaWithoutValue() {
            return criteriaWithoutValue;
        }

        public void setCriteriaWithoutValue(List<String> criteriaWithoutValue) {
            this.criteriaWithoutValue = criteriaWithoutValue;
        }

        public List<Map<String, Object>> getCriteriaWithSingleValue() {
            return criteriaWithSingleValue;
        }

        public void setCriteriaWithSingleValue(List<Map<String, Object>> criteriaWithSingleValue) {
            this.criteriaWithSingleValue = criteriaWithSingleValue;
        }

        public List<Map<String, Object>> getCriteriaWithListValue() {
            return criteriaWithListValue;
        }

        public void setCriteriaWithListValue(List<Map<String, Object>> criteriaWithListValue) {
            this.criteriaWithListValue = criteriaWithListValue;
        }

        public List<Map<String, Object>> getCriteriaWithBetweenValue() {
            return criteriaWithBetweenValue;
        }

        public void setCriteriaWithBetweenValue(List<Map<String, Object>> criteriaWithBetweenValue) {
            this.criteriaWithBetweenValue = criteriaWithBetweenValue;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteriaWithoutValue.add(condition);
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("condition", condition);
            map.put("value", value);
            criteriaWithSingleValue.add(map);
        }

        protected void addCriterion(String condition, List<? extends Object> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("condition", condition);
            map.put("values", values);
            criteriaWithListValue.add(map);
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            List<Object> list = new ArrayList<Object>();
            list.add(value1);
            list.add(value2);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("condition", condition);
            map.put("values", list);
            criteriaWithBetweenValue.add(map);
        }

        public Criteria andTopicidIsNull() {
            addCriterion("topicID is null");
            return (Criteria) this;
        }

        public Criteria andTopicidIsNotNull() {
            addCriterion("topicID is not null");
            return (Criteria) this;
        }

        public Criteria andTopicidEqualTo(Integer value) {
            addCriterion("topicID =", value, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidNotEqualTo(Integer value) {
            addCriterion("topicID <>", value, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidGreaterThan(Integer value) {
            addCriterion("topicID >", value, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidGreaterThanOrEqualTo(Integer value) {
            addCriterion("topicID >=", value, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidLessThan(Integer value) {
            addCriterion("topicID <", value, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidLessThanOrEqualTo(Integer value) {
            addCriterion("topicID <=", value, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidIn(List<Integer> values) {
            addCriterion("topicID in", values, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidNotIn(List<Integer> values) {
            addCriterion("topicID not in", values, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidBetween(Integer value1, Integer value2) {
            addCriterion("topicID between", value1, value2, "topicid");
            return (Criteria) this;
        }

        public Criteria andTopicidNotBetween(Integer value1, Integer value2) {
            addCriterion("topicID not between", value1, value2, "topicid");
            return (Criteria) this;
        }

        public Criteria andBoardidIsNull() {
            addCriterion("boardID is null");
            return (Criteria) this;
        }

        public Criteria andBoardidIsNotNull() {
            addCriterion("boardID is not null");
            return (Criteria) this;
        }

        public Criteria andBoardidEqualTo(Integer value) {
            addCriterion("boardID =", value, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidNotEqualTo(Integer value) {
            addCriterion("boardID <>", value, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidGreaterThan(Integer value) {
            addCriterion("boardID >", value, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidGreaterThanOrEqualTo(Integer value) {
            addCriterion("boardID >=", value, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidLessThan(Integer value) {
            addCriterion("boardID <", value, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidLessThanOrEqualTo(Integer value) {
            addCriterion("boardID <=", value, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidIn(List<Integer> values) {
            addCriterion("boardID in", values, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidNotIn(List<Integer> values) {
            addCriterion("boardID not in", values, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidBetween(Integer value1, Integer value2) {
            addCriterion("boardID between", value1, value2, "boardid");
            return (Criteria) this;
        }

        public Criteria andBoardidNotBetween(Integer value1, Integer value2) {
            addCriterion("boardID not between", value1, value2, "boardid");
            return (Criteria) this;
        }

        public Criteria andSectionidIsNull() {
            addCriterion("sectionID is null");
            return (Criteria) this;
        }

        public Criteria andSectionidIsNotNull() {
            addCriterion("sectionID is not null");
            return (Criteria) this;
        }

        public Criteria andSectionidEqualTo(Integer value) {
            addCriterion("sectionID =", value, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidNotEqualTo(Integer value) {
            addCriterion("sectionID <>", value, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidGreaterThan(Integer value) {
            addCriterion("sectionID >", value, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidGreaterThanOrEqualTo(Integer value) {
            addCriterion("sectionID >=", value, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidLessThan(Integer value) {
            addCriterion("sectionID <", value, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidLessThanOrEqualTo(Integer value) {
            addCriterion("sectionID <=", value, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidIn(List<Integer> values) {
            addCriterion("sectionID in", values, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidNotIn(List<Integer> values) {
            addCriterion("sectionID not in", values, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidBetween(Integer value1, Integer value2) {
            addCriterion("sectionID between", value1, value2, "sectionid");
            return (Criteria) this;
        }

        public Criteria andSectionidNotBetween(Integer value1, Integer value2) {
            addCriterion("sectionID not between", value1, value2, "sectionid");
            return (Criteria) this;
        }

        public Criteria andUseridIsNull() {
            addCriterion("userID is null");
            return (Criteria) this;
        }

        public Criteria andUseridIsNotNull() {
            addCriterion("userID is not null");
            return (Criteria) this;
        }

        public Criteria andUseridEqualTo(String value) {
            addCriterion("userID =", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridNotEqualTo(String value) {
            addCriterion("userID <>", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridGreaterThan(String value) {
            addCriterion("userID >", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridGreaterThanOrEqualTo(String value) {
            addCriterion("userID >=", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridLessThan(String value) {
            addCriterion("userID <", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridLessThanOrEqualTo(String value) {
            addCriterion("userID <=", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridLike(String value) {
            addCriterion("userID like", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridNotLike(String value) {
            addCriterion("userID not like", value, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridIn(List<String> values) {
            addCriterion("userID in", values, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridNotIn(List<String> values) {
            addCriterion("userID not in", values, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridBetween(String value1, String value2) {
            addCriterion("userID between", value1, value2, "userid");
            return (Criteria) this;
        }

        public Criteria andUseridNotBetween(String value1, String value2) {
            addCriterion("userID not between", value1, value2, "userid");
            return (Criteria) this;
        }

        public Criteria andNicknameIsNull() {
            addCriterion("nickname is null");
            return (Criteria) this;
        }

        public Criteria andNicknameIsNotNull() {
            addCriterion("nickname is not null");
            return (Criteria) this;
        }

        public Criteria andNicknameEqualTo(String value) {
            addCriterion("nickname =", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotEqualTo(String value) {
            addCriterion("nickname <>", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameGreaterThan(String value) {
            addCriterion("nickname >", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameGreaterThanOrEqualTo(String value) {
            addCriterion("nickname >=", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameLessThan(String value) {
            addCriterion("nickname <", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameLessThanOrEqualTo(String value) {
            addCriterion("nickname <=", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameLike(String value) {
            addCriterion("nickname like", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotLike(String value) {
            addCriterion("nickname not like", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameIn(List<String> values) {
            addCriterion("nickname in", values, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotIn(List<String> values) {
            addCriterion("nickname not in", values, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameBetween(String value1, String value2) {
            addCriterion("nickname between", value1, value2, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotBetween(String value1, String value2) {
            addCriterion("nickname not between", value1, value2, "nickname");
            return (Criteria) this;
        }

        public Criteria andRemoteipIsNull() {
            addCriterion("remoteIP is null");
            return (Criteria) this;
        }

        public Criteria andRemoteipIsNotNull() {
            addCriterion("remoteIP is not null");
            return (Criteria) this;
        }

        public Criteria andRemoteipEqualTo(String value) {
            addCriterion("remoteIP =", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipNotEqualTo(String value) {
            addCriterion("remoteIP <>", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipGreaterThan(String value) {
            addCriterion("remoteIP >", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipGreaterThanOrEqualTo(String value) {
            addCriterion("remoteIP >=", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipLessThan(String value) {
            addCriterion("remoteIP <", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipLessThanOrEqualTo(String value) {
            addCriterion("remoteIP <=", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipLike(String value) {
            addCriterion("remoteIP like", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipNotLike(String value) {
            addCriterion("remoteIP not like", value, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipIn(List<String> values) {
            addCriterion("remoteIP in", values, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipNotIn(List<String> values) {
            addCriterion("remoteIP not in", values, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipBetween(String value1, String value2) {
            addCriterion("remoteIP between", value1, value2, "remoteip");
            return (Criteria) this;
        }

        public Criteria andRemoteipNotBetween(String value1, String value2) {
            addCriterion("remoteIP not between", value1, value2, "remoteip");
            return (Criteria) this;
        }

        public Criteria andTitleIsNull() {
            addCriterion("title is null");
            return (Criteria) this;
        }

        public Criteria andTitleIsNotNull() {
            addCriterion("title is not null");
            return (Criteria) this;
        }

        public Criteria andTitleEqualTo(String value) {
            addCriterion("title =", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotEqualTo(String value) {
            addCriterion("title <>", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleGreaterThan(String value) {
            addCriterion("title >", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleGreaterThanOrEqualTo(String value) {
            addCriterion("title >=", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleLessThan(String value) {
            addCriterion("title <", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleLessThanOrEqualTo(String value) {
            addCriterion("title <=", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleLike(String value) {
            addCriterion("title like", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotLike(String value) {
            addCriterion("title not like", value, "title");
            return (Criteria) this;
        }

        public Criteria andTitleIn(List<String> values) {
            addCriterion("title in", values, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotIn(List<String> values) {
            addCriterion("title not in", values, "title");
            return (Criteria) this;
        }

        public Criteria andTitleBetween(String value1, String value2) {
            addCriterion("title between", value1, value2, "title");
            return (Criteria) this;
        }

        public Criteria andTitleNotBetween(String value1, String value2) {
            addCriterion("title not between", value1, value2, "title");
            return (Criteria) this;
        }

        public Criteria andRewardIsNull() {
            addCriterion("reward is null");
            return (Criteria) this;
        }

        public Criteria andRewardIsNotNull() {
            addCriterion("reward is not null");
            return (Criteria) this;
        }

        public Criteria andRewardEqualTo(Short value) {
            addCriterion("reward =", value, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardNotEqualTo(Short value) {
            addCriterion("reward <>", value, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardGreaterThan(Short value) {
            addCriterion("reward >", value, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardGreaterThanOrEqualTo(Short value) {
            addCriterion("reward >=", value, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardLessThan(Short value) {
            addCriterion("reward <", value, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardLessThanOrEqualTo(Short value) {
            addCriterion("reward <=", value, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardIn(List<Short> values) {
            addCriterion("reward in", values, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardNotIn(List<Short> values) {
            addCriterion("reward not in", values, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardBetween(Short value1, Short value2) {
            addCriterion("reward between", value1, value2, "reward");
            return (Criteria) this;
        }

        public Criteria andRewardNotBetween(Short value1, Short value2) {
            addCriterion("reward not between", value1, value2, "reward");
            return (Criteria) this;
        }

        public Criteria andVisitsIsNull() {
            addCriterion("visits is null");
            return (Criteria) this;
        }

        public Criteria andVisitsIsNotNull() {
            addCriterion("visits is not null");
            return (Criteria) this;
        }

        public Criteria andVisitsEqualTo(Integer value) {
            addCriterion("visits =", value, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsNotEqualTo(Integer value) {
            addCriterion("visits <>", value, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsGreaterThan(Integer value) {
            addCriterion("visits >", value, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsGreaterThanOrEqualTo(Integer value) {
            addCriterion("visits >=", value, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsLessThan(Integer value) {
            addCriterion("visits <", value, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsLessThanOrEqualTo(Integer value) {
            addCriterion("visits <=", value, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsIn(List<Integer> values) {
            addCriterion("visits in", values, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsNotIn(List<Integer> values) {
            addCriterion("visits not in", values, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsBetween(Integer value1, Integer value2) {
            addCriterion("visits between", value1, value2, "visits");
            return (Criteria) this;
        }

        public Criteria andVisitsNotBetween(Integer value1, Integer value2) {
            addCriterion("visits not between", value1, value2, "visits");
            return (Criteria) this;
        }

        public Criteria andRepliesIsNull() {
            addCriterion("replies is null");
            return (Criteria) this;
        }

        public Criteria andRepliesIsNotNull() {
            addCriterion("replies is not null");
            return (Criteria) this;
        }

        public Criteria andRepliesEqualTo(Integer value) {
            addCriterion("replies =", value, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesNotEqualTo(Integer value) {
            addCriterion("replies <>", value, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesGreaterThan(Integer value) {
            addCriterion("replies >", value, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesGreaterThanOrEqualTo(Integer value) {
            addCriterion("replies >=", value, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesLessThan(Integer value) {
            addCriterion("replies <", value, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesLessThanOrEqualTo(Integer value) {
            addCriterion("replies <=", value, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesIn(List<Integer> values) {
            addCriterion("replies in", values, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesNotIn(List<Integer> values) {
            addCriterion("replies not in", values, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesBetween(Integer value1, Integer value2) {
            addCriterion("replies between", value1, value2, "replies");
            return (Criteria) this;
        }

        public Criteria andRepliesNotBetween(Integer value1, Integer value2) {
            addCriterion("replies not between", value1, value2, "replies");
            return (Criteria) this;
        }

        public Criteria andAttachesIsNull() {
            addCriterion("attaches is null");
            return (Criteria) this;
        }

        public Criteria andAttachesIsNotNull() {
            addCriterion("attaches is not null");
            return (Criteria) this;
        }

        public Criteria andAttachesEqualTo(Byte value) {
            addCriterion("attaches =", value, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesNotEqualTo(Byte value) {
            addCriterion("attaches <>", value, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesGreaterThan(Byte value) {
            addCriterion("attaches >", value, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesGreaterThanOrEqualTo(Byte value) {
            addCriterion("attaches >=", value, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesLessThan(Byte value) {
            addCriterion("attaches <", value, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesLessThanOrEqualTo(Byte value) {
            addCriterion("attaches <=", value, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesIn(List<Byte> values) {
            addCriterion("attaches in", values, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesNotIn(List<Byte> values) {
            addCriterion("attaches not in", values, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesBetween(Byte value1, Byte value2) {
            addCriterion("attaches between", value1, value2, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachesNotBetween(Byte value1, Byte value2) {
            addCriterion("attaches not between", value1, value2, "attaches");
            return (Criteria) this;
        }

        public Criteria andAttachiconIsNull() {
            addCriterion("attachIcon is null");
            return (Criteria) this;
        }

        public Criteria andAttachiconIsNotNull() {
            addCriterion("attachIcon is not null");
            return (Criteria) this;
        }

        public Criteria andAttachiconEqualTo(String value) {
            addCriterion("attachIcon =", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconNotEqualTo(String value) {
            addCriterion("attachIcon <>", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconGreaterThan(String value) {
            addCriterion("attachIcon >", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconGreaterThanOrEqualTo(String value) {
            addCriterion("attachIcon >=", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconLessThan(String value) {
            addCriterion("attachIcon <", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconLessThanOrEqualTo(String value) {
            addCriterion("attachIcon <=", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconLike(String value) {
            addCriterion("attachIcon like", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconNotLike(String value) {
            addCriterion("attachIcon not like", value, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconIn(List<String> values) {
            addCriterion("attachIcon in", values, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconNotIn(List<String> values) {
            addCriterion("attachIcon not in", values, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconBetween(String value1, String value2) {
            addCriterion("attachIcon between", value1, value2, "attachicon");
            return (Criteria) this;
        }

        public Criteria andAttachiconNotBetween(String value1, String value2) {
            addCriterion("attachIcon not between", value1, value2, "attachicon");
            return (Criteria) this;
        }

        public Criteria andLastpostuserIsNull() {
            addCriterion("lastPostUser is null");
            return (Criteria) this;
        }

        public Criteria andLastpostuserIsNotNull() {
            addCriterion("lastPostUser is not null");
            return (Criteria) this;
        }

        public Criteria andLastpostuserEqualTo(String value) {
            addCriterion("lastPostUser =", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserNotEqualTo(String value) {
            addCriterion("lastPostUser <>", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserGreaterThan(String value) {
            addCriterion("lastPostUser >", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserGreaterThanOrEqualTo(String value) {
            addCriterion("lastPostUser >=", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserLessThan(String value) {
            addCriterion("lastPostUser <", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserLessThanOrEqualTo(String value) {
            addCriterion("lastPostUser <=", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserLike(String value) {
            addCriterion("lastPostUser like", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserNotLike(String value) {
            addCriterion("lastPostUser not like", value, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserIn(List<String> values) {
            addCriterion("lastPostUser in", values, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserNotIn(List<String> values) {
            addCriterion("lastPostUser not in", values, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserBetween(String value1, String value2) {
            addCriterion("lastPostUser between", value1, value2, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastpostuserNotBetween(String value1, String value2) {
            addCriterion("lastPostUser not between", value1, value2, "lastpostuser");
            return (Criteria) this;
        }

        public Criteria andLastnicknameIsNull() {
            addCriterion("lastNickname is null");
            return (Criteria) this;
        }

        public Criteria andLastnicknameIsNotNull() {
            addCriterion("lastNickname is not null");
            return (Criteria) this;
        }

        public Criteria andLastnicknameEqualTo(String value) {
            addCriterion("lastNickname =", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameNotEqualTo(String value) {
            addCriterion("lastNickname <>", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameGreaterThan(String value) {
            addCriterion("lastNickname >", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameGreaterThanOrEqualTo(String value) {
            addCriterion("lastNickname >=", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameLessThan(String value) {
            addCriterion("lastNickname <", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameLessThanOrEqualTo(String value) {
            addCriterion("lastNickname <=", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameLike(String value) {
            addCriterion("lastNickname like", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameNotLike(String value) {
            addCriterion("lastNickname not like", value, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameIn(List<String> values) {
            addCriterion("lastNickname in", values, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameNotIn(List<String> values) {
            addCriterion("lastNickname not in", values, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameBetween(String value1, String value2) {
            addCriterion("lastNickname between", value1, value2, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastnicknameNotBetween(String value1, String value2) {
            addCriterion("lastNickname not between", value1, value2, "lastnickname");
            return (Criteria) this;
        }

        public Criteria andLastposttimeIsNull() {
            addCriterion("lastPostTime is null");
            return (Criteria) this;
        }

        public Criteria andLastposttimeIsNotNull() {
            addCriterion("lastPostTime is not null");
            return (Criteria) this;
        }

        public Criteria andLastposttimeEqualTo(Date value) {
            addCriterion("lastPostTime =", value, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeNotEqualTo(Date value) {
            addCriterion("lastPostTime <>", value, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeGreaterThan(Date value) {
            addCriterion("lastPostTime >", value, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeGreaterThanOrEqualTo(Date value) {
            addCriterion("lastPostTime >=", value, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeLessThan(Date value) {
            addCriterion("lastPostTime <", value, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeLessThanOrEqualTo(Date value) {
            addCriterion("lastPostTime <=", value, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeIn(List<Date> values) {
            addCriterion("lastPostTime in", values, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeNotIn(List<Date> values) {
            addCriterion("lastPostTime not in", values, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeBetween(Date value1, Date value2) {
            addCriterion("lastPostTime between", value1, value2, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andLastposttimeNotBetween(Date value1, Date value2) {
            addCriterion("lastPostTime not between", value1, value2, "lastposttime");
            return (Criteria) this;
        }

        public Criteria andIsdigestIsNull() {
            addCriterion("isDigest is null");
            return (Criteria) this;
        }

        public Criteria andIsdigestIsNotNull() {
            addCriterion("isDigest is not null");
            return (Criteria) this;
        }

        public Criteria andIsdigestEqualTo(String value) {
            addCriterion("isDigest =", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestNotEqualTo(String value) {
            addCriterion("isDigest <>", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestGreaterThan(String value) {
            addCriterion("isDigest >", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestGreaterThanOrEqualTo(String value) {
            addCriterion("isDigest >=", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestLessThan(String value) {
            addCriterion("isDigest <", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestLessThanOrEqualTo(String value) {
            addCriterion("isDigest <=", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestLike(String value) {
            addCriterion("isDigest like", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestNotLike(String value) {
            addCriterion("isDigest not like", value, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestIn(List<String> values) {
            addCriterion("isDigest in", values, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestNotIn(List<String> values) {
            addCriterion("isDigest not in", values, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestBetween(String value1, String value2) {
            addCriterion("isDigest between", value1, value2, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsdigestNotBetween(String value1, String value2) {
            addCriterion("isDigest not between", value1, value2, "isdigest");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeIsNull() {
            addCriterion("isReplyNotice is null");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeIsNotNull() {
            addCriterion("isReplyNotice is not null");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeEqualTo(String value) {
            addCriterion("isReplyNotice =", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeNotEqualTo(String value) {
            addCriterion("isReplyNotice <>", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeGreaterThan(String value) {
            addCriterion("isReplyNotice >", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeGreaterThanOrEqualTo(String value) {
            addCriterion("isReplyNotice >=", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeLessThan(String value) {
            addCriterion("isReplyNotice <", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeLessThanOrEqualTo(String value) {
            addCriterion("isReplyNotice <=", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeLike(String value) {
            addCriterion("isReplyNotice like", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeNotLike(String value) {
            addCriterion("isReplyNotice not like", value, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeIn(List<String> values) {
            addCriterion("isReplyNotice in", values, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeNotIn(List<String> values) {
            addCriterion("isReplyNotice not in", values, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeBetween(String value1, String value2) {
            addCriterion("isReplyNotice between", value1, value2, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIsreplynoticeNotBetween(String value1, String value2) {
            addCriterion("isReplyNotice not between", value1, value2, "isreplynotice");
            return (Criteria) this;
        }

        public Criteria andIshidepostIsNull() {
            addCriterion("isHidePost is null");
            return (Criteria) this;
        }

        public Criteria andIshidepostIsNotNull() {
            addCriterion("isHidePost is not null");
            return (Criteria) this;
        }

        public Criteria andIshidepostEqualTo(String value) {
            addCriterion("isHidePost =", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostNotEqualTo(String value) {
            addCriterion("isHidePost <>", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostGreaterThan(String value) {
            addCriterion("isHidePost >", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostGreaterThanOrEqualTo(String value) {
            addCriterion("isHidePost >=", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostLessThan(String value) {
            addCriterion("isHidePost <", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostLessThanOrEqualTo(String value) {
            addCriterion("isHidePost <=", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostLike(String value) {
            addCriterion("isHidePost like", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostNotLike(String value) {
            addCriterion("isHidePost not like", value, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostIn(List<String> values) {
            addCriterion("isHidePost in", values, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostNotIn(List<String> values) {
            addCriterion("isHidePost not in", values, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostBetween(String value1, String value2) {
            addCriterion("isHidePost between", value1, value2, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIshidepostNotBetween(String value1, String value2) {
            addCriterion("isHidePost not between", value1, value2, "ishidepost");
            return (Criteria) this;
        }

        public Criteria andIssolvedIsNull() {
            addCriterion("isSolved is null");
            return (Criteria) this;
        }

        public Criteria andIssolvedIsNotNull() {
            addCriterion("isSolved is not null");
            return (Criteria) this;
        }

        public Criteria andIssolvedEqualTo(String value) {
            addCriterion("isSolved =", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedNotEqualTo(String value) {
            addCriterion("isSolved <>", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedGreaterThan(String value) {
            addCriterion("isSolved >", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedGreaterThanOrEqualTo(String value) {
            addCriterion("isSolved >=", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedLessThan(String value) {
            addCriterion("isSolved <", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedLessThanOrEqualTo(String value) {
            addCriterion("isSolved <=", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedLike(String value) {
            addCriterion("isSolved like", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedNotLike(String value) {
            addCriterion("isSolved not like", value, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedIn(List<String> values) {
            addCriterion("isSolved in", values, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedNotIn(List<String> values) {
            addCriterion("isSolved not in", values, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedBetween(String value1, String value2) {
            addCriterion("isSolved between", value1, value2, "issolved");
            return (Criteria) this;
        }

        public Criteria andIssolvedNotBetween(String value1, String value2) {
            addCriterion("isSolved not between", value1, value2, "issolved");
            return (Criteria) this;
        }

        public Criteria andTopscopeIsNull() {
            addCriterion("topScope is null");
            return (Criteria) this;
        }

        public Criteria andTopscopeIsNotNull() {
            addCriterion("topScope is not null");
            return (Criteria) this;
        }

        public Criteria andTopscopeEqualTo(String value) {
            addCriterion("topScope =", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeNotEqualTo(String value) {
            addCriterion("topScope <>", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeGreaterThan(String value) {
            addCriterion("topScope >", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeGreaterThanOrEqualTo(String value) {
            addCriterion("topScope >=", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeLessThan(String value) {
            addCriterion("topScope <", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeLessThanOrEqualTo(String value) {
            addCriterion("topScope <=", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeLike(String value) {
            addCriterion("topScope like", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeNotLike(String value) {
            addCriterion("topScope not like", value, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeIn(List<String> values) {
            addCriterion("topScope in", values, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeNotIn(List<String> values) {
            addCriterion("topScope not in", values, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeBetween(String value1, String value2) {
            addCriterion("topScope between", value1, value2, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopscopeNotBetween(String value1, String value2) {
            addCriterion("topScope not between", value1, value2, "topscope");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateIsNull() {
            addCriterion("topExpireDate is null");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateIsNotNull() {
            addCriterion("topExpireDate is not null");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateEqualTo(Date value) {
            addCriterion("topExpireDate =", value, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateNotEqualTo(Date value) {
            addCriterion("topExpireDate <>", value, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateGreaterThan(Date value) {
            addCriterion("topExpireDate >", value, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateGreaterThanOrEqualTo(Date value) {
            addCriterion("topExpireDate >=", value, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateLessThan(Date value) {
            addCriterion("topExpireDate <", value, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateLessThanOrEqualTo(Date value) {
            addCriterion("topExpireDate <=", value, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateIn(List<Date> values) {
            addCriterion("topExpireDate in", values, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateNotIn(List<Date> values) {
            addCriterion("topExpireDate not in", values, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateBetween(Date value1, Date value2) {
            addCriterion("topExpireDate between", value1, value2, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andTopexpiredateNotBetween(Date value1, Date value2) {
            addCriterion("topExpireDate not between", value1, value2, "topexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighcolorIsNull() {
            addCriterion("highColor is null");
            return (Criteria) this;
        }

        public Criteria andHighcolorIsNotNull() {
            addCriterion("highColor is not null");
            return (Criteria) this;
        }

        public Criteria andHighcolorEqualTo(String value) {
            addCriterion("highColor =", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorNotEqualTo(String value) {
            addCriterion("highColor <>", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorGreaterThan(String value) {
            addCriterion("highColor >", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorGreaterThanOrEqualTo(String value) {
            addCriterion("highColor >=", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorLessThan(String value) {
            addCriterion("highColor <", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorLessThanOrEqualTo(String value) {
            addCriterion("highColor <=", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorLike(String value) {
            addCriterion("highColor like", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorNotLike(String value) {
            addCriterion("highColor not like", value, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorIn(List<String> values) {
            addCriterion("highColor in", values, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorNotIn(List<String> values) {
            addCriterion("highColor not in", values, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorBetween(String value1, String value2) {
            addCriterion("highColor between", value1, value2, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighcolorNotBetween(String value1, String value2) {
            addCriterion("highColor not between", value1, value2, "highcolor");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateIsNull() {
            addCriterion("highExpireDate is null");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateIsNotNull() {
            addCriterion("highExpireDate is not null");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateEqualTo(Date value) {
            addCriterion("highExpireDate =", value, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateNotEqualTo(Date value) {
            addCriterion("highExpireDate <>", value, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateGreaterThan(Date value) {
            addCriterion("highExpireDate >", value, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateGreaterThanOrEqualTo(Date value) {
            addCriterion("highExpireDate >=", value, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateLessThan(Date value) {
            addCriterion("highExpireDate <", value, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateLessThanOrEqualTo(Date value) {
            addCriterion("highExpireDate <=", value, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateIn(List<Date> values) {
            addCriterion("highExpireDate in", values, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateNotIn(List<Date> values) {
            addCriterion("highExpireDate not in", values, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateBetween(Date value1, Date value2) {
            addCriterion("highExpireDate between", value1, value2, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andHighexpiredateNotBetween(Date value1, Date value2) {
            addCriterion("highExpireDate not between", value1, value2, "highexpiredate");
            return (Criteria) this;
        }

        public Criteria andStateIsNull() {
            addCriterion("state is null");
            return (Criteria) this;
        }

        public Criteria andStateIsNotNull() {
            addCriterion("state is not null");
            return (Criteria) this;
        }

        public Criteria andStateEqualTo(String value) {
            addCriterion("state =", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateNotEqualTo(String value) {
            addCriterion("state <>", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateGreaterThan(String value) {
            addCriterion("state >", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateGreaterThanOrEqualTo(String value) {
            addCriterion("state >=", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateLessThan(String value) {
            addCriterion("state <", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateLessThanOrEqualTo(String value) {
            addCriterion("state <=", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateLike(String value) {
            addCriterion("state like", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateNotLike(String value) {
            addCriterion("state not like", value, "state");
            return (Criteria) this;
        }

        public Criteria andStateIn(List<String> values) {
            addCriterion("state in", values, "state");
            return (Criteria) this;
        }

        public Criteria andStateNotIn(List<String> values) {
            addCriterion("state not in", values, "state");
            return (Criteria) this;
        }

        public Criteria andStateBetween(String value1, String value2) {
            addCriterion("state between", value1, value2, "state");
            return (Criteria) this;
        }

        public Criteria andStateNotBetween(String value1, String value2) {
            addCriterion("state not between", value1, value2, "state");
            return (Criteria) this;
        }

        public Criteria andCreatetimeIsNull() {
            addCriterion("createTime is null");
            return (Criteria) this;
        }

        public Criteria andCreatetimeIsNotNull() {
            addCriterion("createTime is not null");
            return (Criteria) this;
        }

        public Criteria andCreatetimeEqualTo(Date value) {
            addCriterion("createTime =", value, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeNotEqualTo(Date value) {
            addCriterion("createTime <>", value, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeGreaterThan(Date value) {
            addCriterion("createTime >", value, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
            addCriterion("createTime >=", value, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeLessThan(Date value) {
            addCriterion("createTime <", value, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
            addCriterion("createTime <=", value, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeIn(List<Date> values) {
            addCriterion("createTime in", values, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeNotIn(List<Date> values) {
            addCriterion("createTime not in", values, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeBetween(Date value1, Date value2) {
            addCriterion("createTime between", value1, value2, "createtime");
            return (Criteria) this;
        }

        public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
            addCriterion("createTime not between", value1, value2, "createtime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeIsNull() {
            addCriterion("updateTime is null");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeIsNotNull() {
            addCriterion("updateTime is not null");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeEqualTo(Date value) {
            addCriterion("updateTime =", value, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeNotEqualTo(Date value) {
            addCriterion("updateTime <>", value, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeGreaterThan(Date value) {
            addCriterion("updateTime >", value, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
            addCriterion("updateTime >=", value, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeLessThan(Date value) {
            addCriterion("updateTime <", value, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
            addCriterion("updateTime <=", value, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeIn(List<Date> values) {
            addCriterion("updateTime in", values, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeNotIn(List<Date> values) {
            addCriterion("updateTime not in", values, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeBetween(Date value1, Date value2) {
            addCriterion("updateTime between", value1, value2, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
            addCriterion("updateTime not between", value1, value2, "updatetime");
            return (Criteria) this;
        }

        public Criteria andUpdateuserIsNull() {
            addCriterion("updateUser is null");
            return (Criteria) this;
        }

        public Criteria andUpdateuserIsNotNull() {
            addCriterion("updateUser is not null");
            return (Criteria) this;
        }

        public Criteria andUpdateuserEqualTo(String value) {
            addCriterion("updateUser =", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserNotEqualTo(String value) {
            addCriterion("updateUser <>", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserGreaterThan(String value) {
            addCriterion("updateUser >", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserGreaterThanOrEqualTo(String value) {
            addCriterion("updateUser >=", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserLessThan(String value) {
            addCriterion("updateUser <", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserLessThanOrEqualTo(String value) {
            addCriterion("updateUser <=", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserLike(String value) {
            addCriterion("updateUser like", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserNotLike(String value) {
            addCriterion("updateUser not like", value, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserIn(List<String> values) {
            addCriterion("updateUser in", values, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserNotIn(List<String> values) {
            addCriterion("updateUser not in", values, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserBetween(String value1, String value2) {
            addCriterion("updateUser between", value1, value2, "updateuser");
            return (Criteria) this;
        }

        public Criteria andUpdateuserNotBetween(String value1, String value2) {
            addCriterion("updateUser not between", value1, value2, "updateuser");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }

        public Criteria andUseridLikeInsensitive(String value) {
            addCriterion("upper(userID) like", value.toUpperCase(), "userid");
            return this;
        }

        public Criteria andNicknameLikeInsensitive(String value) {
            addCriterion("upper(nickname) like", value.toUpperCase(), "nickname");
            return this;
        }

        public Criteria andRemoteipLikeInsensitive(String value) {
            addCriterion("upper(remoteIP) like", value.toUpperCase(), "remoteip");
            return this;
        }

        public Criteria andTitleLikeInsensitive(String value) {
            addCriterion("upper(title) like", value.toUpperCase(), "title");
            return this;
        }

        public Criteria andAttachiconLikeInsensitive(String value) {
            addCriterion("upper(attachIcon) like", value.toUpperCase(), "attachicon");
            return this;
        }

        public Criteria andLastpostuserLikeInsensitive(String value) {
            addCriterion("upper(lastPostUser) like", value.toUpperCase(), "lastpostuser");
            return this;
        }

        public Criteria andLastnicknameLikeInsensitive(String value) {
            addCriterion("upper(lastNickname) like", value.toUpperCase(), "lastnickname");
            return this;
        }

        public Criteria andIsdigestLikeInsensitive(String value) {
            addCriterion("upper(isDigest) like", value.toUpperCase(), "isdigest");
            return this;
        }

        public Criteria andIsreplynoticeLikeInsensitive(String value) {
            addCriterion("upper(isReplyNotice) like", value.toUpperCase(), "isreplynotice");
            return this;
        }

        public Criteria andIshidepostLikeInsensitive(String value) {
            addCriterion("upper(isHidePost) like", value.toUpperCase(), "ishidepost");
            return this;
        }

        public Criteria andIssolvedLikeInsensitive(String value) {
            addCriterion("upper(isSolved) like", value.toUpperCase(), "issolved");
            return this;
        }

        public Criteria andTopscopeLikeInsensitive(String value) {
            addCriterion("upper(topScope) like", value.toUpperCase(), "topscope");
            return this;
        }

        public Criteria andHighcolorLikeInsensitive(String value) {
            addCriterion("upper(highColor) like", value.toUpperCase(), "highcolor");
            return this;
        }

        public Criteria andStateLikeInsensitive(String value) {
            addCriterion("upper(state) like", value.toUpperCase(), "state");
            return this;
        }

        public Criteria andUpdateuserLikeInsensitive(String value) {
            addCriterion("upper(updateUser) like", value.toUpperCase(), "updateuser");
            return this;
        }
    }
}